package SecondeStage.Collection.List;

public class LinkedList_ {
    public static void main(String[] args) {
        // LinkedList底层维护了一个双向链表
        Node jack = new Node("jack");
        Node tom = new Node("tom");
        Node hsp = new Node("老韩");

        //连接三个结点，形成双向链表
        jack.next = tom;
        tom.next = hsp;
        hsp.pre = tom;
        tom.pre =jack;

        // 让first引用指向jack，就是双向链表的头结点
        Node first = jack;
        // 让last引用指向hsp,就是双向链表的尾节点
        Node last = hsp;

        // 遍历
        while (true){
            if (first == null){
                break;
            }
            System.out.println(first);
            first =first.next;
        }
    }
}

// Node 对象表示双向链表的一个节点
class Node{
    public Object item; // 真正存放数据
    public Node next; // 指向下一个节点
    public Node pre; // 指向前一个节点s

    public Node(Object item) {
        this.item = item;
    }

    @Override
    public String toString() {
        return "Node name=" +item;
    }
}